{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 10. 形态点位\n",
    "*盘整形态是等待趋势的机会*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 目录\n",
    "1. 什么是形态?\n",
    "2. 如何找到高低转折点？\n",
    "3. 各种形态的计算条件是什么？\n",
    "4. 如何把形态用图展示出来？\n",
    "5. 如何将形态编写成策略？"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 什么是形态?\n",
    "价格形态的变化往往预示着上升趋势和下降趋势之间的转变。根据定义，价格形态是一种可识别的价格变动结构，通过一系列趋势线或曲线来确定。当价格形态显示趋势方向的变化时，它被称为反转模式;当趋势在短暂停顿后继续存在时，就会出现持续模式。长期以来，技术分析师一直使用价格形态来检验当前的走势，并预测未来的市场走势。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 如何找到高低转折点？\n",
    "通过当两条EMA发生金叉，就往回一段时间（10天）找最低点。\n",
    "通过当两条EMA发生死叉，就往回一段时间（10天）找最高点。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb5c77f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import talib as ta\n",
    "import tushare as ts\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "data = ts.get_k_data('600036', start='2016-01-01', ktype='D',autype='qfq')\n",
    "data.index = pd.to_datetime(data['date'],format='%Y-%m-%d')\n",
    "\n",
    "data['EMA2'] = ta.abstract.EMA(data, 2)\n",
    "data['EMA5'] = ta.abstract.EMA(data, 5)\n",
    "data.pop('date')\n",
    "\n",
    "\n",
    "def low_rolling(frame):\n",
    "    if frame['EMA2'][-1] > frame[\"EMA5\"][-1] and (frame['EMA2'][-2] < frame[\"EMA5\"][-2]):\n",
    "        return frame['low'].idxmin(), frame['low'].min()  \n",
    "    else:\n",
    "        return None\n",
    "\n",
    "def high_rolling(frame):\n",
    "    if frame['EMA2'][-1] < frame[\"EMA5\"][-1] and (frame['EMA2'][-2] > frame[\"EMA5\"][-2]):\n",
    "        return frame['high'].idxmax(), frame['high'].max()\n",
    "    else:\n",
    "        return None\n",
    "\n",
    "def rolling(data, function, window=10):\n",
    "    for i in range(window, len(data)):\n",
    "        value = function(data.iloc[i-window: i])\n",
    "        if value:\n",
    "            yield value #把方法编程生成器，可以用for循环\n",
    "\n",
    "\n",
    "high_dict = dict(rolling(data, high_rolling))\n",
    "low_dict = dict(rolling(data, low_rolling))\n",
    "\n",
    "plt.plot(data['close'])\n",
    "plt.scatter(high_dict.keys(), high_dict.values(), c='r', marker='^', linewidths=3)\n",
    "plt.scatter(low_dict.keys(), low_dict.values(), c='g', marker='v', linewidths=3)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 各种形态的计算条件是什么？\n",
    "1. 三角形\n",
    "    - 扩散三角形\n",
    "\n",
    "        Top:\n",
    "        - P1=highest\n",
    "        - P1< P3< P5\n",
    "        - P2 > P4\n",
    "        \n",
    "    - 收敛三角形\n",
    "        Top:\n",
    "        - P1=highest\n",
    "        - P1> P3> P5\n",
    "        - P2 < P4\n",
    "\n",
    "2. 矩形\n",
    "    Top:\n",
    "    - P1=highest\n",
    "    - P1,P3,P5 < (P1+P3+P5)/3*1.01\n",
    "    - P1,P3,P5 > (P1+P3+P5)/3*0.99\n",
    "    - P2,P4 < (P2+P4)/2*1.01\n",
    "\n",
    "3. 头肩底\n",
    "    - P1=Lowest\n",
    "    - P3< P1, P3< P5\n",
    "    - P1, P5 < (P1+P5)/2*1.01\n",
    "    - P2, P4 < (P2+P4)/2*1.01"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "date               \n",
      "2016-01-26  highest    14.790\n",
      "2016-02-15  lowest     13.906\n",
      "2016-02-22  highest    14.521\n",
      "2016-02-29  lowest     13.492\n",
      "2016-03-16  highest    15.808\n",
      "2016-03-29  lowest     15.145\n",
      "2016-04-22  highest    17.317\n",
      "2016-05-10  lowest     16.318\n",
      "2016-05-23  highest    17.269\n",
      "2016-05-24  lowest     16.645\n",
      "2016-06-01  highest    17.385\n",
      "2016-06-24  lowest     16.510\n",
      "2016-07-04  highest    17.221\n",
      "2016-07-08  lowest     16.673\n",
      "2016-07-18  highest    17.490\n",
      "2016-07-27  lowest     16.890\n",
      "2016-08-23  highest    19.000\n",
      "2016-08-29  lowest     18.030\n",
      "2016-09-05  highest    18.820\n",
      "2016-09-14  lowest     17.480\n",
      "2016-10-11  highest    18.490\n",
      "2016-10-21  lowest     17.820\n",
      "2016-10-25  highest    18.460\n",
      "2016-10-31  lowest     17.720\n",
      "2016-11-28  highest    19.200\n",
      "2016-12-02  lowest     18.240\n",
      "2016-12-12  highest    19.650\n",
      "2016-12-26  lowest     17.390\n",
      "2017-02-21  highest    19.810\n",
      "2017-03-22  lowest     18.480\n",
      "2017-03-27  highest    19.320\n",
      "2017-04-20  lowest     18.380\n",
      "2017-04-28  highest    19.240\n",
      "dtype: float64\n",
      "MultiIndex(levels=[[2016-01-26 00:00:00, 2016-02-01 00:00:00, 2016-02-15 00:00:00, 2016-02-22 00:00:00, 2016-02-29 00:00:00, 2016-03-16 00:00:00, 2016-03-29 00:00:00, 2016-04-05 00:00:00, 2016-04-22 00:00:00, 2016-05-10 00:00:00, 2016-05-23 00:00:00, 2016-05-24 00:00:00, 2016-05-25 00:00:00, 2016-06-01 00:00:00, 2016-06-08 00:00:00, 2016-06-15 00:00:00, 2016-06-24 00:00:00, 2016-06-29 00:00:00, 2016-07-04 00:00:00, 2016-07-08 00:00:00, 2016-07-14 00:00:00, 2016-07-18 00:00:00, 2016-07-27 00:00:00, 2016-08-23 00:00:00, 2016-08-29 00:00:00, 2016-09-05 00:00:00, 2016-09-14 00:00:00, 2016-09-22 00:00:00, 2016-10-11 00:00:00, 2016-10-21 00:00:00, 2016-10-25 00:00:00, 2016-10-31 00:00:00, 2016-11-09 00:00:00, 2016-11-28 00:00:00, 2016-12-02 00:00:00, 2016-12-12 00:00:00, 2016-12-26 00:00:00, 2017-01-23 00:00:00, 2017-01-26 00:00:00, 2017-02-21 00:00:00, 2017-02-28 00:00:00, 2017-03-03 00:00:00, 2017-03-22 00:00:00, 2017-03-27 00:00:00, 2017-04-05 00:00:00, 2017-04-10 00:00:00, 2017-04-20 00:00:00, 2017-04-28 00:00:00, 2017-05-05 00:00:00], [u'highest', u'lowest']],\n",
      "           labels=[[0, 2, 3, 4, 5, 6, 8, 9, 10, 11, 13, 16, 18, 19, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 33, 34, 35, 36, 39, 42, 43, 46, 47], [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0]],\n",
      "           names=[u'date', None])\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAD8CAYAAAB+UHOxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl4VOXZ+PHvMzOZLJONkIQtgbAjoCwGRHHBtW6trdYF\na6vW1rbaVqvUWn9WsLZ9raK1tfZV64Jtrda+blW0rggqqICC7DuBANnIPklmfX5/nJnJJJlkJskk\nM5Pcn+vKxcw5Z87cTDLnPs+utNYIIYQYfEyxDkAIIURsSAIQQohBShKAEEIMUpIAhBBikJIEIIQQ\ng5QkACGEGKQkAQghxCAVNgEopQqVUiuUUluVUluUUjf5tl/qe+5VShX3fahCCCGiSYUbCKaUGgGM\n0Fp/rpTKANYDXwc04AUeAxZprdf1dbBCCCGixxLuAK31EeCI73GDUmobMEpr/Q6AUiriN8vNzdVF\nRUU9i1QIIQap9evXV2mt86J93rAJIJhSqgiYBXzajddcD1wPMHr0aNatk4KCEEJ0h1KqpC/OG3Ej\nsFIqHXgRuFlrXR/p67TWj2uti7XWxXl5UU9gQggheiiiBKCUSsK4+D+rtX6pb0MSQgjRHyLpBaSA\nJ4FtWusH+z4kIYQQ/SGSNoD5wLeBTUqpDb5tdwDJwMNAHrBcKbVBa/2VvglTCCFEtEXSC+gjoLOu\nPi9HNxwhhBD9RUYCCyHEICUJQAghBilJAEII0Yc+2XuU7WUR95zvV5IAhBCiD930/Bfc998dsQ4j\npG6NBBZCCBG5sroWyusdZKY0xTqUkKQEIIQQfeTL0loASmuaCTfxZixIAhBCiD6y6VAdAM0uD9V2\nZ4yj6UgSgBBC9JGNpXWBx6U1zTGMJDRpAxBCiD6gtWZTaS0zCrOpqG/B7nDHOqQOJAEIIUQfKK1p\npqbJxa3nFHDVvDGxDickqQISQog+8KWv+mdGQXaMI+mcJAAhhOgDX5bWYjWbmDw8I9ahdEoSgBBC\n9IED1U0U5qRitcTvZTZ+IxNCiATm8nhJtphjHUaXJAEIIUQfcHk0SebOZtKPD5IAhBCiD7g8Xizm\n+L7Exnd0QgiRoNxSAhBCiMHJ5fWSlOglAKVUoVJqhVJqq1Jqi1LqJt/2HKXUO0qpXb5/h/R9uEII\nkRjcHo3FlPglADdwq9Z6KjAPuFEpNRW4HXhPaz0ReM/3XAghBEYbQMKXALTWR7TWn/seNwDbgFHA\nRcAzvsOeAb7eV0EKIUSiGRAJIJhSqgiYBXwKDNNaH/HtKgOGdfKa65VS65RS6yorK3sRqhBCJA63\nV2MZKI3ASql04EXgZq11mwUutbHSQcjVDrTWj2uti7XWxXl5eb0KVgghEoXLPUBKAEqpJIyL/7Na\n65d8m8uVUiN8+0cAFX0TohBisLA77dz9wd0UPVSE+ddmih4q4u4P7sbutMc6tG5zeQdAN1CllAKe\nBLZprR8M2vUf4Grf46uBV6MfnhBisLA77Zz+zOksWbmEkroSvNpLSV0JS1Yu4fRnTk+4JOD2eLGY\nEr8EMB/4NnCGUmqD7+d84F7gbKXULuAs33MhhOiRpauXsvbw2pD71h5ey9LVS/s5ot4xpoKI7wQQ\ndkEYrfVHQGflmDOjG44QYrB6esPTYfcvXrC4n6LpPaMXUIJXAQkhElui1KsfrD/Yq/3xJhF6AcmS\nkEIMYP569eCqFX+9+vJdy1lx9QpsVlsMI2xVmFlISV1Jl/sThder8XjjvwoovqMTQvRKItWrXzvz\n2l7tjycurxdAEoAQInYiqVePF4tOWsSckXNC7ps7ai6LTlrUzxH1nNtjDIsaCHMBCSESVCLVq9us\nNlZcvYIlpy1hTNYYTMrEmKwxLDltCe9/5/24qaqKhMuTGCUAaQMQYgBLtHp1m9XG4gWLE6q3Tygu\nXwlAegEJIWJmINWrJxK3rw1AVgQTQsTMQKpXTyQut78EEN+X2PiOTgjRKwOpXt3ucMc6hIi19gKK\n7yogaQMQYoBLxHr1ivoWKhocvLetgk/3HSU/I5lXNhzmvzefwpThmd06l91pZ+nqpTy94WkO1h+k\nMLOQa2dey6KTFvVZAmztBRTf99iSAIQQcaW8voUzH1hJo++OPzstidV7XAB8tKuqWwkgVgPhWnsB\nxXcJIL7TkxBi0Pm8pIZGh5sFk/MozEnltR+fzGd3nEluupUvDtZ261x9MRAukqk1pBuoEKLPxaJ6\no69tL2vApOB/v3U8qVZzYPucohy2HW6zFhVaa4wZ60OL9gRzkZYo3F5fFZCUAIQQfWGgzZ/vt72s\nnqKhtjYXf4BhmSlUNjgCz//xSQljf/kG9S2uTs8V7YFwkZYoXO7EKAHEd3RCiE51p3rjiwM1XPjw\nh7z8RWl/hddjO8oamDIio8P2vIxkGhxump0etNbc+cpmAA4cber0XOEGunV3IFykU2s4fAnAaonv\nS2x8RyeE6FSkF6P/W1/KpY+uYfOhetbur+mP0HqsyemmpLqJycM6NvTmZSQDUNXooL65tUtoVaOj\nw7F+0R4IF2mJwh9Tri25W+fvb5IAhEhQkV6Mlq3ex4T8dEZmpdDQEt996XeWN6I1nZYAACoaHBys\nab3rD64Wai/UQDizN49cx+3Mzju/2wPhIi1RVPhi8sccryQBCJGgIr0YNba4mTQsg7yMZOqbO68v\nj6Ump5vLHlvD1x/5GIApw0MkgHTjYlrZ4KC0pjmwvbKLEkCogXAF1vOweU/GVflTth7u/LWhXDvz\nWtAKszePoc6fYvbmd9zvizEj2dKhHSPeRLIo/FNKqQql1OagbTOUUmuUUpuUUq8ppbo3MkOIPpQo\nK2D1VqTVG40OD7ZkC5mpSTR00WAaS+tLavhsX3XgeeGQtA7H5AdKAC2UhigBPPjOTv7njW0dXucf\nCHf9pDf5btGnqMbLSLOayU1P5ltPfMqbm45EHOeikxZxTOqtFDieJt1zDnnO20EbnSmDp9aobHDE\n/d0/RFYCWAac227bE8DtWutjgZeBn0c5LiF6ZKD2jAkl0nl+Gh0u0pPNZKYkUR+nVUBHG51tnptC\nzKOfl5FMjs3K+pIaPt1Xjc1qpmhoGpUNDlpcHv703i4eW7WXm57/Aq11m9dqrXl81V7e2VqO1pCe\nbOHFH57E9JGZ3PDPz3l/e3nguOc/O9Bpw7LNaiPT85XA82Q9iTGmn3aYWmPAJACt9Sqgut3mScAq\n3+N3gEuiHJcQPZJIK2D1ViTz/Lg9XlpcXmzJFjJSLP1WBeTxao52UTXTXnBDbmpS6GoTpRTzxuXw\n6obDvLO1nO+cVMSIrFQO1Tbz/vaKwHGvbjiM3elp89ojdS1tnte3uBhis/Ls9+YxKT+D/3ljOwD/\nXl/K7S9t4r63tncaa3JQfN+dPxaazuCE3B+0GXdR0dAyMBJAJ7YAF/keXwrE16TiYtBKpBWwoqG0\n2svnW85iw/U78dzlYf/N+1m8YHHgYuS/EKYHqoD6pwTw3GcHOPHe99ld0RD22EaHm5U7K0kyK749\nbwx/u25up8deeNxIhtqsPLxwFr84dwoT8tPZXd7I0rd2MNRmDRzXvmF486G6Ns8f/3YxAKlWM2ce\nk8++Kjsuj5fXNh4GOpZIgrW4WpPL7edNYcrwDB56d2ebYyoaHORnpIT5n8deTxPAd4EblFLrgQyg\n009LKXW9UmqdUmpdZWVlD99OiMhE0jNmILURrN1fzcaDtZ127/TPoGlLtpCRbKHZ5cHp66Pel9aX\n1OB0e7nr1S0dqmOC1TW7WPj4J3y4qwqPV3PP16czpyin0+PPP3YE6391Nl+dMRKACfnpNDjc7K2y\ns/TSGTzzXSN5tO8auiVoBPEjV87m1El5gedjc42Ruwerm/iy1EgUuyoaQ75/RUML5fXGuX/z9elY\nLSYumjmK7WUNlNcbpQy7w02T0zNwSwBa6+1a63O01scDzwF7ujj2ca11sda6OC8vr7PDhIiKcD1j\nRmWMGlBtBP4L3aZ2d7h+/gTgLwEA/dIQvOVwHWlWM6v3HGV5J42sLS4P1zz9WSB2b+d5olMT8tMB\nOGViLgsm55GbbpQCqhraJ4A6Juans/2ec7nguBFt9o3LM86x9O0d1DW7GJ9no6rREXJ8wTOr96MU\nvH/raVw1bwwAJ0/IBQg0Yvu7gOYP1ASglMr3/WsC7gQejWZQQvRUuJ4x44eMH1BtBP6LVPsqDr/G\nNgnA6K1S09R59UY0/HdzGTvLG7n6pCKmjczknte3BuIItnJnJV8cqOW+S47r8XvNGp3N12aMZMnX\npqGUCnQVbX/x3nyonmkjM0kJ0b4wIS8di0nxxqYyZo/O5udfmQzA6xsP842/fMz/rTdGT5cctfPX\nD/dxwbEjAkkDYFyeUd12oNpoOPZXP+VnDoAEoJR6DlgDTFZKlSqlrgMWKqV2AtuBw8DAqlgVCStc\nz5i9tXu7fH0itRG8vaWMf3xyAOiqBGDUV9uSLcwqHALAO1srQh4bLf9eZ1TDXXNSEfd8fTrl9Q4e\nfm9Xh+P8PW2+Mn04PzhtHL+/5Nhuv1ea1cKfFs5ivO+CnGOzohRUBtXhVzU6KKtvYfqorJDnyEpL\n4vWfnsynd5zJSzfMZ8HkfCwmxZLXtvLFgVo+23cUrTV3vbqFJJPizgumtnm9LdlCjs0aGJtQ0WBU\nBSVCFVDY2UC11gs72fXHKMciRK/5e8Z0NkNm5r1dD1np7uRgsXT939cHHlc2OCivb2FYZtuGx8ZA\nG4CZolwbMwqyeH97OT9aML7P4mpocTNvXA7DMlMYlpnC5cWFPPnRPr55fAETh7UO8DpQ3URWahJZ\nqUn88rxjovLeFrOJobZkVmyv4Kp5o8nPSAnU/08bGToBAG3WGEhJMnPCuBz2Vdrxaqi2O3lvWwUr\nd1byqwunMjyrY+PuqOxUnvvsAFWNDmp9JayB3AgsRNzyD/zZf/P+Dj1jgtsIrN6JWLzD2ry2u5OD\nxVJhTmqb589/djDQEOkX3AYAkJeRQqOjbRfJaKtvcZGZkhR4ftu5k0mzmjs0CB+obmJ0TscBX731\nqwuPYVdFA+f8YRX3vL41UD02dWTk41Uf+3Yx7y9awPh8G9V2J+sP1GAxKa4+cUzI4w/XGnf/247U\ns6OsgXG5NrJTk0IeG08kAYhBxd9GkOo5geGO+8l2Xx1yfyIoGmrUPU8dYVzY/vDuTi7+y+o2x5T5\nEsJQX914qtXcphtjX6hvdgUanP3v/fNzp7Bm71Fe/7K1QfhAdVOHJBYNF80cxX9+fDJ1zS6e/Ggf\nK7ZXMDonjaxuXJDTky2kJJnJsSVTbXfS2OImI8WCpZPpnf0Nwu/echpfLvkK7916WsjBbPFGEoAY\nkFbvruLm57+grt3Ap0UnLWJG9uXkOW9HYcGshwb2BY+eTQQerybNaubZ750Q2HaotrnNMbsrGhmR\nlRIoAaQmmWh29m0CaPBdLINdOXc000dlcvdrWymra8Hh9nCguolxuemdnKV3Jg3L4H+/dTwAnx+o\nYfqons1Wk5OWZCQAh5uMlM4TyM1nTWTXb88LNDJ3tUhNPJEEIAacT/Ye5conPuWVDYe569XNbfaZ\nVQpDXNeTbXODdQtmndNh9GyisDs9FBflMMRmxX+z6f93b2UjC+5fwfJNRwJdJcEYZdvchyUAj1fT\n4HC3qQICMJsUD1w6k2anm+/9bS2bD9Xh8Womh5j0LVr8jbBe3XX9f1dybMnUt7iptjsDSTQUpVTc\nL/4SSuJFLEQXyupauG7ZWsbn2bjyhNG8uuFwmy6SC+7/gH1Vzdx2zhyum3shWUkFHUbP9lR/DzBr\ncrhJTzbuOP9+nVEKSDKb0Frz6Mo97D/ahNPtDfSQAUix9k0C0Frj9epAo3P7EgDA5OEZ/PnK2Ww9\nXM+lj64JbOsrwf3wp3Wj/j9Yjs1IZAerm0gP8X9KdJIAxICyo7wBu9PDPV+fzqJzjP7cH+2uAsDh\n9gTqxL8xaxR5Gck0OT0crO58RalIRTIJXbQThN3hJs1qXJTmT8jlrgun4nB7Katv4b+bywBIMisu\nLS4IvCY1yYzT7cXTk1FXIazYUcF5f/yQsb98g3F3vMFfVuwGaNMGEOz0Kfl8/9RxgUFf/naMaLM7\n7Tz+xQOB59e8fmaPPmt/KWJvlZ2MLkoAiWrg/Y/EoNbom+smx2Ylx2YlPyOZe9/cTlZqEvPGGfX9\nD1w6gzSrJTBo6JT7VvDhbadT2IseKeEmofvdh7/jnb3vhF1MvDvsTg+2oPnmR2Yb3Q4f/WAP9S1u\n/vbducwpymkzJ71/orUWlzFFdG9d+3Tb//Njq4xxFpld3C1fd/JYVmyv4MbTJ/TJkonBC7cX8i+8\nNHOocTNLVm7u9mc9NqiNQkoAQsQ5/zQH/gY7/5f23je3B+aQLxiS6jum9QvtH7zUU+EGkD2y9pGo\nj0BucrrbXMSLi3KwmBTPrCmhaGgap0zM7bAgif95X7UDjMo2Ptv2bQDB8jNSePtnp3HRzFF9EkNw\nMnarcpym1onauvtZ52eCwiiuPLv5yYSeNyoUSQBiQPHPdum/uP/x8lkkmRUOt4d9VcaXtsB3p3/q\npDx+euZE0pMtHKptCX3CCIUbQFbnCD1S16+7I5Cdbi8uj26TAHLTkzlnmjGu4ap5Y0L2RPH3UolG\nT6D6dnMKfXjb6TzyrdnMGp3dZsBXfwv+LCutv+Oo9S+d7u+K3WnnK8+eiVMZM4R6sCf0vFGhSAIQ\nA8KeykY2ldbR0OJCKUj31Y0fW5DFwwtn0eLy8uamMiwmxTBfvW5Kkplbzp7EpGHpHKlr7ur0YfV2\nAFl3RyA3OY1El9buDv8Pl8/kg0ULjHnqQwiuAuqt7Udap3o+Y0o+hTlpzCzM5uUb5sd0GoTgz9Jt\nKsOrajvd3xV/ScKlSgDQtN4kJOK8UaFIAhADwpkPrOSrf/6IP72/m9Qkc5tBOMW+6YXX7D3KiOyU\nDoN5RmSldlgwpLvCDSDLSu66G2J3E0hj0DTPwZItxpQPnQ1C8ieAaFQBbT1slGpe+/HJ/OVbs3t9\nvmiJdK3kcPwlhRbzlwBY9PCQ+xOZJAAx4DS1q97ITU9mvG/GxoLsjg29I7JSOFzb3OW89eGEm4Tu\nxjk3dvn67o5A3lFm3H0HN7ZG0svI3wbQ4ur9mgBbj9Qz1GZl+qjQs2zGSqRrJYfjLyk0mt+nxbSR\nBstrIfcnMkkAIuHZQ0w13N7csUYPIH8DcLAR2ak43F6q7T2fJtk/Cd2dJ9/NGPcfyXZd1WaA2R2n\n3BFIEMmeaZi9+a2x9WAE8v1v7WBcri2wsEmkayGnJBlf+aiUAI7UM3VkZtyNeo10reRw/CUFrZoo\nT/5/OE17Qu5PZJIARMLzN+525YSxRjVQwZCOJYCxuca2/Ud716hns9pw130DXOM5u/CGNgPM/Ali\n8alLGO5azBD3VT0egXykrpntZQ1cMbcwMA4g0rWQo9UI7PJ42VnWGJiHKJ5EslZyJKJVkohnkgBE\nwttTaSzf9+ZNp3R6zInjh5KaZObYgo4XLP9I2T0VvUsAr244xHOfHSA1ycyhmo6Nyjarje/Pug10\nGqcWXNLjEcirdhpLq542qbUUEelayNFqBN5T2YjT4+3WDJv9qasZYSMVrZJEPJMEIBLenopGTKp1\nZaYpIaYXGJaZwhd3nc3pk/M77CsYkobVbAokkh7FUNnIHS9tonjMEL57chFH6ppxeTrWs+8sN+ru\nD/Ri9PHKnZUMz0xh0rDWQUqRrIUMkJuRTJJZsbG0tsvjw9l2xJhj/5g4LAFES7RKEvFs4A1tE4PO\nnko7o3PSSLaY2bj4HKydTMrVWUOl2aQYm2tjdycLgYfT4vJw47OfY7WYePjKWXy4swqvNuYlaj+6\neJcvAVQ2OGh2ejoM1OrMBzsqePCdnTz7vRP4cFcV508f0abuvTCzkJK6kk5f76+vzkxJ4pypw3n5\ni0Pcft4Uki09a7w97Bs30Rfz+ccTf0li8YLFsQ6lT0gJQCS8PZWNgWqcrNSkDhfVSHrHjM+39bgE\ncPdrW9le1sCDl89kRFYqBb457ndVNHQ4dmd563v4RyZH4oG3d/JlaR2XP/YJDS1uTpuc12Z/d+qr\nr5hbSG2Ti7e2lEf8/u2V1bWQlZoUV71/RPdFsibwU0qpCqXU5qBtM5VSnyilNiil1iml5vZtmEKE\n5vFq9lbZ20x5HCzS3jET8tI5UN2Ew929unF/vf8NC8YHqpdmjx5CerKF7y5bx7r91W2O31XeEOi6\n2Z1qIP/I5q2+qpf5E3Lb7O9OffX88bmMyk7lX2sPRPTe5fUt/PS5tmsrGMtPxv+at6JrkZQAlgHn\nttt2H3C31nomcJfvuRD9rrSm45THwSLtHTM+Px2vhpKjXV+UV2yv4OwHV9LkdAfq/ecUDeGWsycF\njklJMnPt/CIAnvp4X2C716vZWd7IAl+i6E4C2FPZyBlT8rnzgmO47dzJHVa36k59tcmkuHxOIR/v\nPhpYmL0r9765nf9sPMzbW8oC28obHB3WHxaJJ2wC0FqvAqrbbwb8rT9ZwOEoxyVERPzVNuPzQzfI\nRdo7xp9AwrUDfP9v69hV0ciGA7X86B/rSU4y86eFszqMLr71nMlcVlzAR7uqcPsagw/VNtPs8nDi\n+KGkWc1hE4DXq3niw72c+9AqyusdnDA2h++dMo4bFkwIeXx3er5cWlyAScELEUyC5/+MKxsdgW0V\nIRagF4mnp20ANwP3K6UOAkuBX0YvJCEi5++62VkJINLeMf4eRHtCJAC3x8u/1h7g6qc+w+2byP7K\nJz5lZ3kjD142gxFZode1PW1SPvUt7kCPG38PoEnD0hmdk9ZmHYL/bj7SZkH3f356gLMeXMlvlm8j\nPdnCHedP4VvzQi9I3hMjslKZPyGXt7eWdXlcRUMLWw4b1U67fe0XtU1OKhocDJcEkPB6mgB+BPxM\na10I/Ax4srMDlVLX+9oJ1lVWVvbw7YQIrarRQbLFRHaaNeT+SOeFSbNaGJWdGrIheNnq/fzixU2U\nHLVz8ezWKYzvvOCYQHVOKCdPyMWk4L1tFdgd7kAD8MRhGYzOSQtUN9XYnfzwH59z1ROf4vUlmDte\n3sTeKjvjcm38+4cncv2p47tckrAnxuelcyTMLKivbTyCx6sZmZXCO9vKuevVzfzkuS/QWvPVGSOj\nGo/ofz1NAFcDL/ke/xvotBFYa/241rpYa12cl5fX2WFC9Eizy9NhRsxg3ekdMzbXxisbDgfu1P1W\n7qxkbK6NFYsW8MClMwLbrzmpqMtzZ6UlMWv0EP7ywR6mLX6L36/4N25VyXGPTuRQ00Z2VTTy+YGa\nQMPuropGin/7Ln9bsz9wjiE2a59NtTAsM4UGh7vLqTQ+2lXJuDwbf1o4ixPG5vDCuoN8vLuKO84/\npk+XcxT9o6e3FIeB04APgDOAXdEKSIjuaHJ6AqNbQ1l00iKW71oesiG4fe+Y2aOz+Wh3Ff/89ABL\nvjYNMKY8WLe/hsvnFHa4ELev9w9l3rgs1pfUGE8cx9JsfpPquhKOHn2RodzIxX9ZTW56a+ml2u7k\nrle3BJ6HGtQWLf5ePBUNDsaGKF24PV7W7q/hopkjKS7K4YmiHBxuD063N7DgjkhsYROAUuo5YAGQ\nq5QqBRYD3wf+qJSyAC3A9X0ZpBCdCTeYyt87ZunqpTy94WkO1h+kMLOQa2dey6KTFrVpIP3pmRNZ\ntnp/YFEZgP1VdppdHmYWZge2vfHTUyJeynB/85vAMXhppM7yAvWWVwBwq9Z+E1X2GsCI46zZu7h+\n7hVU1HtJtpg5uV13z2jyN+KW1bUwNrdjQ/GWw/U0OtyBpTTBmG66p4PHRPwJmwC01gs72XV8lGMR\notuMKqCu/4wjHc1pMZsYmZ0aWOlqV3kDZ/9hFUCbcQbdmf9m+f4/cyjZZVzwgwoQLnUEAKcqoSz5\n5yR7J5LuOYcntz7El3X/7NEawd3lTwAL//oJO39zXoek9sneowCcMC6nT+MQsSMjgUVCa3K6u6wC\n6q7M1CTqfQOe7lm+LbDd30uouw7WH8RtanvxB/CoCqotT1JhXYJWTbSYN1JlvR+Uq99Wm/IvIg/w\nZWktHq9u0w32k71HGZ9nIz9DevsMVJIARELrznw6kchMsdDQ4qbG7uRT3x0wELaU0ZlOeyEpaEh6\nGY8pdM+4/lhtKs1qYdXPTweMi/0f39vFWQ+uZN3+6kD9f3D1jxh4JAGIhBauF1B3ZaYkUd/i4oV1\nB3G4vTx42Qye+/68Hp+vp3PG99dqU6OHpjF5WAar9xzlqY+MUct/XrE7UP9/4nhJAAOZJACR0ML1\nAuqujBQLdc0u/vFpCXPH5nDx7IJeXQS7mqOnK/252tS0UZms3nOURoebcbk2Pt1bzUe7qwA4Yawk\ngIFMEoBIaFGvAkpNoqHFzcHqZr5zYu9H3nY2R8+CMQu6fF1/rjblX9VryvAMFn1lMs0uD4+v2suE\n/HTyMmTCt4FMEoCImUimaQ4nWlVA/lgeXuub19BUx2dVT3Qrls6EmqPn9Stfj5vVpvxdXL9/yjhm\njx4CQF2zK7CMphi4ZEEYERP+aZqDB2j5p2levmt5RN0gtdY0u3pfBRQcS7r7HIYCtabl3PPhP/nv\nntf7pEtmd8Yn9LXjxwzhPz+ez7Gjstpsn+VLBmLgkhKAAKJzN94dkU7T3JUWlxetIbWHPXRCxeIw\n7cap9tJoebNbsfRENNatjYYmVxMv7/4jY/84Fss9rZ/lxGGh51cSA4ckABHxoinRFOk0zV1p9i1s\n3tsqoOD3cpn2ciTlp3hUTbdiSVShfvctpk0AfO+Nr/bZDYCID5IAEkRf3qFH4268uyKdprkr/knM\netsIHI1YElWo332F9dccSr6OdUc+65cBaSJ2JAEkgL6+Q4/G3Xh3RTpNc1cO1TYDMLKT+fj7M5ZE\nFep3q1UzblN5p/vFwCEJIAFE+w69fWmipK6ky+P74g44XDfHi8bdwNS7/hu4yIfiX1FrdE5an8bS\nn10y+9tgLv0ISQAJIZp36KFKE+H05A44XJVVuEXMLY6zaHJ6eH97RafvcbC6CbNJMSK7d3PVdGdB\n9YFmMJdVo4azAAAgAElEQVR+hCSAhBDNu7SuShMmncmY5tdJ8cxus727d8CRVFmFW8RcYdTrm7pY\nC6XkaBMjs1NIimBe/q50Z0H1gWYwl36EjANICIWZhV1W03TnLq2r0oLVOwmALPc3aTF/DvTsDjiS\nKit/d8e7TruLikNfZfSUNM6cks+YoTZs1uTAQuq1Ta5O32d3RSNFQ6NzcY50yuiBpjsL5oiBR0oA\nCaD9XZjSKaS7zyfLdRVoU7fu0roqLVh067wvvbkD7k6V1bvbKli+6QhvbSnjm4+u4fLH1wBQ7bvw\nV9SHXrO2xeVhZ3kDxxVkhdwvIjOYSz9CSgAJIfguLcP1DbLdl2PCWKAkh/O45rjzIj5XYWYhDZXn\n4zTtDwx28rNoY5Hv+YWn8eKPftnjeCOtsnK6vfzuDWPO/b2V9jb/HvE1/r63vYK05O1sPlTHkq9N\nY3ye8f/eeqQet1dz7Kjs9qcX3TRYSz9CSgAJwX+X9qtT7ibHfS1OUwnkLGVyYQVedxZbDoW+Sw7l\nnIKbyPBcwFDXjR32JXkLAKNxtTcibVj856cl7Kuyc+FxI9rsP1TbzN4qIxGU1jTz11V7Wbe/hlte\n2AiAw+1h2cf7STIrZo+RBCBET4VNAEqpp5RSFUqpzUHb/qWU2uD72a+U2tC3YQqb1cY1x94CmHjk\nkivZf9sKXr3+O5gUbD9SH9E56ppdvL1uUusG3TqASuk00rTR+FvR4GD1HmM64Aff2cnfP+m6m2h7\nkTQsOt1eHl25lxPG5vCDU8e32X/1U5+hgJvOnMh3ThzD+l+dzc/OnsjGg7U8/N4u5t+7gv9sPMz3\nTxknq1UJ0QuRlACWAecGb9BaX661nqm1ngm8CLzUB7GJdg7WGNUio4ca/d5TksyMzbXxxcFavF4d\n9vVHGx1tno+xzQ3U+V4+7n7QSdx14VQArvzrp/x3cxl/em8Xv3plM1sPR5ZkILJulS+sO0hZfQs/\nXDCeae3W2HW6vTxxdTE/O3sSv75oOlmpSSyYnA/AA+/sZHROKv+47gR+/pXJEcckhOgobALQWq8C\nqkPtU0op4DLguSjHJULwD3wqHNI68Om0Sfl8uKuKCx7+iA92dN5nHqDWt9btnRccA8DSM14ITELW\nUHcsx4zI5FvzRgeOv/fN1jVx399eHnGcbRoWbXMZ6rqBMZnjAw2L9c0m7n9rB3PH5rBgUh4mk+K5\n78/j1rMn8di3j+ftn50auOD7TcxP58oTRjMu18ajVx3PyRNzMf78hBA91ds2gFOAcq31rmgEI7pW\nWtOE1WwiP2iRjjsvOIY/XjETu8PNNU+v7fJCXefrWTOzMJvUJDObD9VxtNFB0e3L2XyonivmFJJs\nMfPoVcfzvZPHsv9oa1vAx7uPdnbakGxWG7fMu4Nx/J509/m8ePFnga6fL31+iLpmF7+/5LjARfzE\n8UP5yZkTOXliBr//+DcdBpA1uZr43TeO5f1FC8jPlGofIaKhtwlgIWHu/pVS1yul1iml1lVWhl4A\nW0TmaKOT3HQrpqDRUSaT4qKZo3j3ltMoGJLKH97ZhcsTenRvna8EkGOzMnVkJlsP17OupHXWy6/P\nHAXAudOHc/t5Uxjjq2o6e+ow1h+oocU3+2YktNbc9n9fBhpz91S0zld0pK6ZIWlJjM1t28UwFrOS\nCjGY9TgBKKUswMXAv7o6Tmv9uNa6WGtdnJeX19O3ExgX8MzUpJD7rBYTt583hU2H6nh+behumLVN\nTgCy06xMH5nJlsN17CxrAODFH51IVlrruS1mE3deMJX5E4ZyWXEhTreXdftrQp43lE2H6nhzcxm3\nnj0Jq8XEnsrGwL7yegfDQtzFx2JWUiEGs96UAM4CtmutS6MVjOhafRcJAODC40aSmmTmwNHWO+UW\nl4dbX9jI6t1VgTaAzBQL00ZlYXd6eGdbOaOyUzl+TMfl/86eOoxnvzePE8cPxWJSgZ5BkdjiazS+\naOYoxuXa2iSAivqWkNU4sZiVVIjBLJJuoM8Ba4DJSqlSpdR1vl1XII2//aqu2UVWFwkAjOqdanvr\n9AnrS2p48fNSrlm2lve3V5CRbMFiNjF9pDGC9svSOsbnp3d5zvRkCzMKs/l4T9t2ALvDzasbDnHy\n799ny+G6Nvu2HaknPdlCwZBUxuels+1IA5UNRi+k8noHw0IsNi4zUwrRvyLpBbRQaz1Ca52ktS7Q\nWj/p236N1vrRvg9R+NU3u8hM6ToBDLElUeOr6gHYcLAWgPF56XxZWheo5pk4LB2zry1hVASzac4f\nP5RNpbWBdoQ7X9nEtMVvcdPzGyitaea+/+5oc/zG0jomD8/AZFKMz7NxqLaZOb99lxaXh8rG0FVA\nMjOlEP1LRgInkEhKAEPSrFTbWxPAl6W1jM218fz185hTNIQJ+enYnXZ+9+E9eDDq9J/b+mjY1cVO\nHJ+LV8Nn+6rxejWvf3mEuWNzeHjhLM6bPpwdvrYEgE2ldWw8WMu504YDMCqnNeaCu2/G49V8efTt\nDu8nM1MK0b8kASQIt8eL3emJqAoouARwuLaFMUPTyEpN4oUfnMifFk4N9LRxa6NK5qhjd9ieNrPH\nZJOSZOLj3VXsrGigtsnFN2cX8NUZIxmba6Oq0REYjPbhbqO312XFhdiddu5dc2vgPOnuc2kyfcbf\nd97U4f0G87z8QsSCJIAEUd9irH+bmdr1/H3tSwA1TU6GpFkBUErxh08eCPS00RjdOt3KqNvvqqdN\nssXMnKIclq3ez9cf+Rir2cSJ443ZQ/MzknF7NdW+xLOv0k5+RjJZaUksXb2UDUf/Q63lWQBc6ghH\nrQ+A0h3eT2amFKJ/SQJIEP6690hKAA0tbpqdxsW9xt6aAKB9TxrjGK+q62R/W/4LfnqyhVd/PJ9C\n31KM/h49FfVGiWJflT3Qx//pDU+D8lKX9BxHrIsot96BV7Xe9bd/P//MlPtv3h8YpewfQCaEiK6E\nSADLPt7HuF8up+j25YHRrION/64++GIeyogs42I857fvsvjVzdidHoYE9e8P7klTk/QMGhcudTjk\n/vZOmWCM47jpzIkcM8KYv8futPP67n8a7/nYmRQ9eAybDldQmJPc4XxO83Y8praDAaVnjxCxkxDr\nAbS4vfjnOjtU29xmwNJgUe5bGCVU75lgF88uIDvNyqMr9/DMGmMWzyG21qQRvLpYs/kTDqR+o83r\nu+ppc2xBFh/94nRGZacCrSN3vyg9wCieJMdxE96KVBwk8Xbpn7A7H4nqamZCiOhKiBLABce2zhfv\n9oZfxHwgKqszEsDwrK4TgNmkOHvqsEAPHGhbauhtT5uCIWmB+Xv8I3fdqpJm0+eYsGE3r+Rw8o/Z\nVP8MS1cvlZ49QsSxhEgAhTlpgUVD/HXbg01ZfQtWi6lNdU5XcjNaL/rBr4lmT5tA/b3yUmG9iwMp\nl1BtfRiXaX9gv/TsESJ+JUQCALh2fhFgVAcNRmV1LQzPTIl4CuTc9NaRttlBJYBo9rRpU3+vAKU7\n7JeePULEr4RoAwBj8RMYvCWAQ7XNDI9wGmS7087/bX8amAbA+c/P5drZC1l00iJsVlvU1oCNtH5f\n1pwVIj4lTAnAnwAc7sGXALYermd9SQ3zxnWcsK09f8Psn9f/T2BbScOOPplSWer3hUhsCZcAujMn\n/UDxwNs7yEyxcN0p48Ie62+Y9WLMxqlp7TYb7SmVpX5fiMSWMAkgdZBWAX1+oIb3tlfwg9PGhx0E\nBm0bZiuT7uNw8g2h90eB1O8LkdgSqA3AyFWDrRF46Vs7yE23cs1JRREdH9ww22RZ1eX+aJD6fSES\nV8KUAFIsg68KaOvhelbvOcoPTxuPLTmyXC1TKgshIpUwCcBkUlgtJpoHUQLwj/6dPWZIxK+Rhlkh\nRKQSJgGA0Q7gcA2eKqBGhzEDaHqEd/8gDbNCiMglVAJodnpYtno/6/ZXxzqUfmH3JYBIq39AGmaF\nEJELe2VRSj0FXAhUaK2nB23/CXAjxpzCy7XWt/VZlD5Oj3H3/9cP91JcFL5PfKKz+3o8pVu711Yv\nDbNCiEhEUgJYBpwbvEEpdTpwETBDaz0NiF7n8giEmxJ5oPCXANKSzTGORAgxEEWyKPwqoH2dy4+A\ne7U21hTUWlf0QWyd8mod/qABwO5wY7WYSDInVE2dECJB9PTKMgk4RSn1qVJqpVIqdKtjlOWmG3f+\nVY3OMEcODHanu1sNwEII0R09TQAWIAeYB/wceEF1Mk2lUup6pdQ6pdS6ysrKUIdE7MPbzmDu2Byq\nGh29Ok+isDs82KT6RwjRR3qaAEqBl7ThM8AL5IY6UGv9uNa6WGtdnJeX19M4AUi1mhmdk0ZlQ3wm\nALvTzt0f3E3RQ0WYf22m6KEi7v7g7h5PwNbocGPrZgOwEEJEqqdXl1eA04EVSqlJgBWoilpUXchN\nT+ZooxOtdcRz4/cH/yycaw+vDWwrqSthycolLN+1nBVXr+h2F0y7Q6qAhBB9J2wJQCn1HLAGmKyU\nKlVKXQc8BYxTSm0Gngeu1rp/WmZz0604PV7qm9398XYR88/CGUpPZuFscXn4bF81aZIAhBB9JOzV\nRWu9sJNdV0U5lojkZRgrXVU2tsTV4vDhZtl8esPT3eqX//TH+3F7NU2O+Ep0QoiBI+H6F+b5ljqs\nbIivnkDBs2ymeorJdn230/2R2FPZCMBPzpzY++CEECKEhEsAuYESQHw1BAfPspnvXEKW+2LQppD7\nI1FW18LMwmxOm9S7hnMhhOhMwiUAfwmgKs56AoWaZdOsh3a53+/TvUdZ/OrmNlNdl9Y0UTAkNbpB\nCiFEkIRLAFmpSVhMKu7GAgTPwunFmMbZovOBzmfh9Hg1f3pvFwv/+gnPrClh5U5jnMT9b21n/9Em\nRmRFtgi8EEL0RMIlAJNJMTTdGndjAYJn4TSZmgAYnjq101k4PV7N/3t5Ew++s5OvzhhJRrKFFdsr\nOFzbzCMr9gAwZxBMeCeEiJ2ESwBg9ASKtxIAtM7COW14EQA3z/kNF479KS9/XkVwL1m3x8v4O97g\n+bUHOf/Y4Tx0+UzmjM1hw8FanvxoH2aTYtXPT+ecacNj9D8RQgwGCdnJPDc9Oa7nA/J4jYv9M6v3\n89C7uwDYfKiOe74+nSSzKbDQC8DkYZkopRiba+P97RWUHG3iazNGMnpoWkxiF0IMHgmZAPLSk9l+\npCHWYXTK35hb0+Ti4tmjcLi8PL/2IBOHZfDd+UVtEsDooUZD79hco4qo2eXhh6eN7/+ghRCDTkIm\ngNyMZI7aHXi9GpMpfqaD8Gtyeri8uJAbT5/A6KFpeLya5ZuOcM/rW0lJMlE8prVuv3CIcac/xnfH\nrxRMHp4Rk7iFEINLQrYB5KYn4/Jo6ppdsQ4FMO74/dU+YCxdmWo1B6pxzCbFfZccB8C7W8tpdLTG\nXeBLAFNHZALw4GUz+itsIcQgl5AlAP90EGX1LQyxxX51sCm/+i9nHTOMJ64uRmtNk8tDmrXtNM6X\nzSnk8wM1vLHpSGAeo/+5+FiG+7p6Dk1PZt//nB9XE9wJIQa2hCwBzCrMRil4a0tZzGLQWqO15lBt\nMwDvbisHwOXReLy6QwIAmDduKPUtbtb6FrWfNTq7zX65+Ash+lNCJoDCnDROHDeU1788ErMYLn10\nDQ+9u4vVu41ZsDNTjMJUs28h95Sk0AkAWpOFTPUshIilhEwAACeOG8ruikbqW2LTDrCjvIG/f1LC\nlsP1AIzIMnrzNLl8C7mHWMhleFYKY3Nt7Cw3JnqTBCCEiKWETQAzCo3qk+OWvN2mAba/ON1equ1O\nXv7iEECga6e/BBCqCsjutJOUsj/wfOZjU3q1YpgQQvRGwiaAmUH15w39XArQWuP0eAECPZH8JZGG\nFn8JoG0C8K8Y9nH5ssC2kvp9LFm5hNOfOV2SgBCi3yVsAshMSeK+bxpdK/0X3f7i8mi0hmRL68fX\n6HDj9Wr2VhnVO/6BXX7+FcNazOs7nK8nK4YJIURvJWwCgNaG1/5OAP67/wuOGwHAqOxUtIbHP9zL\n5kP1WEyKonYJwL9imFc14lC78dIYcr8QQvSXsK2QSqmngAuBCq31dN+2JcD3gUrfYXdord/oqyA7\nk5FiLAnZ0OLC7fFyuLalX+bQcbqNBDCjIJvLigvZdqSeu1/byr1vbgdgYn46Sea2uTV4RbCy5Ftp\nn3u7u2KYEEL0ViQlgGXAuSG2/0FrPdP30+8Xf2jtRdPocHP/2zs49f4VlNW19Pn7OtxGQ6/VYmLe\nuKHk+hapyU23Mmt0NudO7ziLZ5sVwZQHlKvz/UII0Q/CJgCt9Sqguh9i6baMoCqgj3YZ/fEP1zX3\n+fv6SwD+NgB/L6SFc0fz8g3zufWcyR1e09WKYJHsF0KIaOtNG8BPlFJfKqWeUkoNiVpE3ZAeSACu\nwMW4or7vSwD+BGD1vecFx43g7q9N4ydndL6Ae/CKYe11tmKYEEL0pZ4mgP8FxgEzgSPAA50dqJS6\nXim1Tim1rrKysrPDeiTT3wbgcAdG3h6q7Y8qIF8C8NXzJ5lNXH1SUSAhhBK8YtiYrDGYlIkxWWM6\nXTFMCCH6Wo+Gomqty/2PlVJ/BV7v4tjHgccBiouLozpiK9liIsmsaGhx4/WtuHWktu+rgPwJIDnE\ndA9d8a8YtnjB4r4ISwghuqVHJQCl1Iigp98ANkcnnG7HQXqyhYYWF9V2Y4WwI3Ut2J12fvn2byl6\ncBrmX5speqgoqiNune1KAEIIkYjCXsGUUs8Ba4DJSqlSpdR1wH1KqU1KqS+B04Gf9XGcnRqelco7\nW8s57Kv6Ka0xRtwuW5FCU9U38WovJXUlUR1xG9wLSAghElUkvYAWaq1HaK2TtNYFWusntdbf1lof\nq7U+Tmv9Na11zKblXHrpcZiUCszFs6uyii9Kj5Csp2DWbadbjtaI2/a9gIQQIhEl/BVs2sgsXr1x\nPhceN4L5E4bS5LCQ7jkDAEVyh+OjMeLWPxJYEoAQIpENiCtYfmYKf75yNhceNxIwken+BhA6AURj\nxG37bqBCCJGIBtQVbGS2MSe/Igkvdky6YwKIxohbhyQAIcQAMKCuYP6F1QGazGtQdFwvOBojblvb\nALrXDVQIIeLJgEoAeRnJvHnzCWSPfAqPqu5QBRTpiFu7087dH9xN0UNFIbuRShWQEGIgGHBXsGOG\n5/LxD//GgrHzUVgwkdStEbf+hVuWrFxCSV1JyG6kgW6gMg5ACJHABuSitDarjfMnnsUXu7ZR+wt7\nYNroSPgXbgnF3400w30FSkGSWUUrZCGE6HcD9hY2xbckY7PL063Xhesm+vSGp6lpcpGRbEEpSQBC\niMQ1YBNAqm+enhant1uvC9dN9GD9QQ7VNlMwpO8XnhFCiL40YBNASpLxX2txd68EUJhyCimemZ3v\nzyyktKaJgiGpvYpPCCFibcAmAH8J4PYXv+Slz0vxeiOciLT65wxz/gaALNdV5DuWtNl9zYxrKa2R\nEoAQIvEN+ATw+YFabnlhI6t2hV+LoK6pdZlGpZNJ95xOivc40EZd/9xRc/n+rJtocnoYJSUAIUSC\nG7AJoP1c/av3HA37mi8O1gQef3vS/Vj0MBRWxmQcG+hG2thinHdYZsdRxkIIkUgGZDdQ6DhR28e7\njTWDV++pYsuheq47eSwmU9tePBX1jsDj2prZQC0A/75kBXOKcgCothuJJCet4yhjIYRIJAM2Afgb\ngf22Hqln0b838n/rSwFYV1LNQ5fPItXaWlKosrcmgI0Ha0lJMtHi8nKwuimQAGqbjIVnhtgkAQgh\nEtuArQKakJ/Bb78xPfBcawIX/6E2K29vLeeKx9dQ0dC6hnB1o5PUJDNThmcAcP6xI0hPtvD4qr24\nfVNAV/sTgJQAhBAJbsAmAIALjh0Rcvs504bx128Xs6uikW88spodZQ0AHLU7GZpuZeIwIwGcOWUY\nN581ke1lDVQ2GqWDWl9DcXZa5KOLhRAiHg3oBJDZyRQQ+RkpnDV1GC/84ETcXi+X/O9qVu6sNBKA\nzcqMgiySLSZOGj+UvAyjsbfJaYwnqLE7SbOaSenmgvBCCBFvBnQCMJkUyRYT3zlxDIu/OjWw3T+D\nw/RRWbxy43xG56Tx3WVr+aKkhqHpyXznxCLeveU0htisge6kzb4EUN3klOofIcSAEMmi8E8ppSqU\nUptD7LtVKaWVUrl9E17v7fjNefz6oulcO38sD11ujPAdm9s6I+iIrFT+/cMTWTApjwaHmxybFavF\nRGGOMdArtd2cQrVNLqn+EUIMCJH0AloG/Bn4W/BGpVQhcA5wIPph9Y2LZo6kYEgqx48Z0ma7LdnC\n498p5smP9gZ6+/il+RKAvwpoZ3kD00dm9U/AQgjRh8KWALTWq4DqELv+ANwGRDjHQuwppSguyukw\ni6fdaec3q37N7z4/k+JluW0WgElNMnJks9PNweomSmuaOWnC0FiEL4QQUdWjcQBKqYuAQ1rrjeGm\nRFZKXQ9cDzB69OievF2f8i8AE7wGgH8BmOW7lrPswuWAUQJ4fq1R2Jk/IW5rvIQQImLdbgRWSqUB\ndwB3RXK81vpxrXWx1ro4Ly+vu2/X58ItAPPMxr8CsOFgLY+t3MvFs0cxPi+9P0MUQog+0ZNeQOOB\nscBGpdR+oAD4XCk1PJqB9ZdwC8D8a6vR9PG3NSVkpiZx5wVTuzxeCCESRbergLTWm4B8/3NfEijW\nWldFMa5+E3YBmIa9FPoe//wrk8mRKSCEEANEJN1AnwPWAJOVUqVKqev6Pqz+U5hZ2PX+rJGBxzML\ns/s6HCGE6DeR9AJaqLUeobVO0loXaK2fbLe/KFHv/gGunXltxPtHZssaAEKIgWNAjwSOxKKTFjFn\n5JyQ++aOmsuikxYFnmemDNjJU4UQg9CgTwA2q40VV69gyWlLGJM1BpMyMSZrTGABGJu1ddRwuC6v\nQgiRSOSWFiMJLF6wmMULFsc6FCGE6DeSACKw5pdnkGQe9IUlIcQAI1e1CGSmenlk3b0UPVSE+dfm\nNlNFCCFEolJa999UPsXFxXrdunX99n7REGqqCL85I+ew4uoVbdoJhBAi2pRS67XWxdE+r5QAwgg3\nVcTS1Uv7OSIhhIgOSQBhhJsqItx+IYSIV5IAwgg7VUSY/UIIEa8kAYQRdqqIMPuFECJeSQIIoztT\nRQghRCKRBBBGd6aKEEKIRCIJIIzuTBUhhBCJRMYBCCFEnJNxAEIIIaJKEoAQQgxSkgCEEGKQkgQg\nhBCDlCQAIYQYpCQBCCHEICUJQAghBql+HQeglKoESvrtDTvKBapi+P6hSEyRi8e4JKbIxVtc8RYP\ndB7TGK11XrTfrF8TQKwppdb1xWCK3pCYIhePcUlMkYu3uOItHuj/mKQKSAghBilJAEIIMUgNtgTw\neKwDCEFiilw8xiUxRS7e4oq3eKCfYxpUbQBCCCFaDbYSgBBCCD+tddz+AIXACmArsAW4ybc9B3gH\n2OX7d4hv+1Df8Y3An9udy4pRvNoJbAcu6eQ9jwc2AbuBP9FaSrrFF8c2oNr33jGNKWj/9YAG9sZD\nTMBlvtfbgbpYxwSM9p37C9/vb2M//039FjgINLbbngz8C9gP1Pfz31RnMfn/zr8EPgJW9/azAjKA\nDUE/VcBDPfj+7fSd2+57HLN4ov3di1ZMGN89/+/rn2GvsT29OPfHDzACmB30Ae0EpgL3Abf7tt8O\n/N732AacDPwwxBfjbuA3vscmILeT9/wMmAco4E3gPN/204E0X0y/w/jixjSmoM/lE4wvbHGsYwIm\nYlxopwCzgfw4iOlx4Ee+x6cCh/v5b2qe7++m/cX2BuBR377b+/lvqrOYTgfSfI9/AbwVjc+q3Xus\nB07twfdvnO9v6kfAi7GMpy++e1H4jPzfPX+yye/s/IFzhTsgnn6AV4GzgR3ACN+2EcCOdsddE+KL\ncRCwhTn/CGB70POFwGMhjpsFfBwPMQEPARcAHwDFsY7J94f/vXj63QGPAb/wPT4RWN1fcbU7vv3F\n9i3gRN9jC8Zdn4plTJ39nff2swraN8kXowqxr1vfv1jHQ5S/e72NiU6+e139JEwbgFKqCOMX/ykw\nTGt9xLerDBgW5rXZvof3KKU+V0r9WykV6jWjgNKg56W+be1dB7wZ65iUUrOBQq318qDzxjQmjD/e\nSUqpj5VSnyilzo2DmJYAVymlSoE3gJ/4zt0fcXVlFMYXHa21G6O6bGaMYwp2HcYdZq8+q3auAP6l\nfVesdrrz/VsTy3ii/d2LRkyE+O6Fe6OESABKqXSMIt/NWuv64H2+DynUBxXMAhRg3PnNxvjjWdrD\nWK7CKO79JZYxKaVMwIPArUGbU2MZU9A5JgILMO5OngBeiXFMC4FlWusC4Hzg70qpDGL/WbWngKfj\nIaagv/P7o/D9C3YF8FxPYgqKay5wRqzi6aPvXq9i8mn/3ftr0E1BSHGfAJRSSRgf7LNa65d8m8uV\nUiN8+0cAFWFOcxRoAvyv/zcwWyllVkpt8P38GjiE8QXyK/Bt88dyFvD/gIsxfkGxjCkDmA58oJTa\nj1En+A6wMsafUynwH621y/c4FVgR45iuA14A0FqvAVKA/9A/v7+uHMLo6IBSKsUX899iHFPw3/nX\nAC+9//75zzsDsGit1/ue9/T7Zwf+EcN4+uK719uYIOi7p7Xeh9EeMbGr94vrBKCUUsCTwDat9YNB\nu/4DXO17fDVGvVunfBn4NYzMCHAmsFVr7dFaz/T93OUrstUrpeb53vs7/nMrpWZh1CV/Dbg31jFp\nreu01rla6yJgLFALvKS1viWWnxPG3f4C3/Z/YPRK+U2MYzrgex1KqWOA4cDG/vj9dXUO/3v64n0b\n2B/rmNr9nVcShe9fkIUE3dn28Pu3nV7+7nobT19893obk+/wV/D97pVSuRhVQnu7fDfdjQaD/v7B\naC3XGK3s/u5R52N0pXoPo4vVu0BO0Gv2Y3TTbMTIiFN928cAq3zneg8Y3cl7FgObgT3An2nthvYu\nUCJLtR8AAACsSURBVO57T41RXxvTmEJ8TrtiHRNGNcaDwD5fTCVxENNUjEbDjUG/v/78m7rP9zqv\n798lvu0pGHfppb6YtsdBTP6/8w3R/Kx8+/YCU8J857v6/lX74mmm9fsXk3j64rsXhc/I/93bitFN\n9Ipw11gZCSyEEINUXFcBCSGE6DuSAIQQYpCSBCCEEIOUJAAhhBikJAEIIcQgJQlACCEGKUkAQggx\nSEkCEEKIQer/A1KUJcK6g/h2AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x48a3a20>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 生成DataFrame处理\n",
    "highest_series = pd.Series(high_dict.values(), index=high_dict.keys())\n",
    "lowest_series = pd.Series(low_dict.values(), index=low_dict.keys())\n",
    "data['highest'] = highest_series\n",
    "data['lowest'] = lowest_series\n",
    "\n",
    "point = pd.concat([data[['highest']], data['lowest']], axis=1).dropna(how='all')\n",
    "\n",
    "\n",
    "def gap_index(multi_series):\n",
    "    last = multi_series.index[0]\n",
    "    \n",
    "    for index in multi_series.index[1:]:\n",
    "        if index[1] == last[1]:\n",
    "            if index[1] == 'lowest':\n",
    "                if multi_series.loc[index] < multi_series.loc[last]:\n",
    "                    last = index\n",
    "            else:\n",
    "                if multi_series.loc[index] > multi_series.loc[last]:\n",
    "                    last = index\n",
    "                \n",
    "        else:\n",
    "            out = (last[0], last[1])\n",
    "            last = index\n",
    "            yield out\n",
    "\n",
    "point = point.stack()\n",
    "P_result = point.loc[list(gap_index(point))]\n",
    "print P_result\n",
    "print P_result.index\n",
    "\n",
    "times = map(lambda index: index[0], P_result.index)\n",
    "\n",
    "plt.plot(data['close'])\n",
    "plt.scatter(times, P_result.values, c='g', marker='o', linewidths=3)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "date               \n",
      "2016-09-05  highest    18.82\n",
      "2016-09-14  lowest     17.48\n",
      "2016-10-11  highest    18.49\n",
      "2016-10-21  lowest     17.82\n",
      "2016-10-25  highest    18.46\n",
      "dtype: float64\n"
     ]
    }
   ],
   "source": [
    "def slices(MI):\n",
    "    for i in range(5, len(MI)):\n",
    "        T = MI.iloc[i-5: i]\n",
    "        if Triangle_pattern(T):\n",
    "            yield T\n",
    "\n",
    "def Triangle_pattern(df):\n",
    "    if df.index.labels[1][0] == 0:\n",
    "        if df.iloc[0]>df.iloc[2] and df.iloc[2]>df.iloc[4]:\n",
    "            if df.iloc[1]<df.iloc[3]:\n",
    "                return True\n",
    "\n",
    "Triangle = pd.concat(list(slices(P_result)))\n",
    "\n",
    "print Triangle"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb611080>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "time_triangle = map(lambda index: index[0], Triangle.index)\n",
    "\n",
    "plt.plot(data['close'])\n",
    "plt.scatter(time_triangle, Triangle.values, c='g', marker='o', linewidths=1)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "date               \n",
      "2016-04-22  highest    17.317\n",
      "2016-05-10  lowest     16.318\n",
      "2016-05-23  highest    17.269\n",
      "2016-05-24  lowest     16.645\n",
      "2016-06-01  highest    17.385\n",
      "2016-05-23  highest    17.269\n",
      "2016-05-24  lowest     16.645\n",
      "2016-06-01  highest    17.385\n",
      "2016-06-24  lowest     16.510\n",
      "2016-07-04  highest    17.221\n",
      "2016-06-01  highest    17.385\n",
      "2016-06-24  lowest     16.510\n",
      "2016-07-04  highest    17.221\n",
      "2016-07-08  lowest     16.673\n",
      "2016-07-18  highest    17.490\n",
      "dtype: float64\n"
     ]
    }
   ],
   "source": [
    "#正方形 Retangle\n",
    "def slices(MI):\n",
    "    for i in range(5, len(MI)):\n",
    "        T = MI.iloc[i-5: i]\n",
    "        if Retangle_pattern(T):\n",
    "            yield T\n",
    "\n",
    "def Retangle_pattern(df):\n",
    "    \n",
    "    cond_h = df.index.labels[1]==0\n",
    "    cond_l = df.index.labels[1]==1\n",
    "    df_h = df[cond_h]\n",
    "    df_l = df[cond_l]\n",
    "    mean_h = sum(df_h)/len(df_h)\n",
    "    mean_l = sum(df_l)/len(df_l)\n",
    "\n",
    "    def match0(df):\n",
    "        if df.index.labels[1][0]==1:\n",
    "            return False\n",
    "        else:\n",
    "            return True\n",
    "        \n",
    "    def match_1(H,L):\n",
    "        if min(H)<max(L):\n",
    "            return False\n",
    "        else:\n",
    "            return True\n",
    "    \n",
    "    def match_2(H):\n",
    "        for high in H:\n",
    "            if high>mean_h*1.01 or high<mean_h*0.99:\n",
    "                return False\n",
    "        return True\n",
    "    \n",
    "    def match_3(L):\n",
    "        for low in L:\n",
    "            if low<mean_l*0.99 or low>mean_l*1.01:\n",
    "                return False\n",
    "        return True\n",
    "\n",
    "    return match0(df) and match_1(df_h, df_l) and match_2(df_h) and match_3(df_l)\n",
    "\n",
    "retangle = pd.concat(list(slices(P_result)))\n",
    "\n",
    "print retangle"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xc3aaa58>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "time_retangle = map(lambda index: index[0], retangle.index)\n",
    "\n",
    "plt.subplot(2,1,1)\n",
    "plt.plot(data['close'])\n",
    "plt.scatter(time_retangle, retangle, c='g', marker='o', linewidths=1)\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 如何将形态编写成策略？\n",
    "选出处于高位收敛三角形的股票\n",
    "1. 读取每一只股票过去五天的高低点\n",
    "2. 对这些高低点进行条件判断\n",
    "3. 满足条件的股票返回True"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 作业\n",
    "熟悉MultiIndex的应用，并且还一直股票来寻找形态。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
